﻿namespace SL651Center2.x.Enums
{
    /// <summary>
    /// 功能码
    /// </summary>
    public enum FunctionCode : byte
    {
        /// <summary>
        /// 链路维持报
        /// </summary>
        FC_2F = 0x2F,
        /// <summary>
        /// 测试报
        /// </summary>
        FC_30 = 0x30,
        /// <summary>
        /// 均匀时段水文信息报
        /// </summary>
        FC_31 = 0x31,
        /// <summary>
        /// 遥测站定时报
        /// </summary>
        FC_32 = 0x32,
        /// <summary>
        /// 遥测站加时报
        /// </summary>
        FC_33 = 0x33,
        /// <summary>
        /// 遥测站小时报
        /// </summary>
        FC_34 = 0x34,
        /// <summary>
        /// 遥测站人工置数报
        /// </summary>
        FC_35 = 0x35,
        /// <summary>
        /// 遥测站图片报或中心站查询遥测站图片采集信息
        /// </summary>
        FC_36 = 0x36,
        /// <summary>
        /// 中心站查询遥测站实时数据
        /// </summary>
        FC_37 = 0x37,
        /// <summary>
        /// 中心站查询遥测站时段数据
        /// </summary>
        FC_38 = 0x38,
        /// <summary>
        /// 中心站查询遥测站人工置数报
        /// </summary>
        FC_39 = 0x39,
        /// <summary>
        /// 中心站查询遥测站指定要素数据
        /// </summary>
        FC_3A = 0x3A,
        /// <summary>
        /// 中心站修改遥测站基本配置表
        /// </summary>
        FC_40 = 0x40,
        /// <summary>
        /// 中心站读取遥测站基本配置表
        /// 遥测站自报基本配置表
        /// </summary>
        FC_41 = 0x41,
        /// <summary>
        /// 中心站修改遥测站运行参数配置表
        /// </summary>
        FC_42 = 0x42,
        /// <summary>
        /// 中心站读取遥测站运行参数配置表
        /// 遥测站自报运行参数配置表
        /// </summary>
        FC_43 = 0x43,
        /// <summary>
        /// 查询水泵电机实时工作数据
        /// </summary>
        FC_44 = 0x44,
        /// <summary>
        /// 查询遥测终端软件版本
        /// </summary>
        FC_45 = 0x45,
        /// <summary>
        /// 查询遥测站状态和报警信息
        /// </summary>
        FC_46 = 0x46,
        /// <summary>
        /// 初始化固态存储数据
        /// </summary>
        FC_47 = 0x47,
        /// <summary>
        /// 回复终端出厂设置
        /// </summary>
        FC_48 = 0x48,
        /// <summary>
        /// 修改密码
        /// </summary>
        FC_49 = 0x49,
        /// <summary>
        /// 设置遥测站时钟
        /// </summary>
        FC_4A = 0x4A,
        /// <summary>
        /// 设置遥测终端IC卡状态
        /// </summary>
        FC_4B = 0x4B,
        /// <summary>
        /// 控制水泵开关命令
        /// 水泵状态信息自报
        /// </summary>
        FC_4C = 0x4C,
        /// <summary>
        /// 控制阀门开关命令
        /// 阀门状态信息自报
        /// </summary>
        FC_4D = 0x4D,
        /// <summary>
        /// 控制闸门开关命令
        /// 闸门状态信息自报
        /// </summary>
        FC_4E = 0x4E,
        /// <summary>
        /// 水量定值控制命令
        /// </summary>
        FC_4F = 0x4F,
        /// <summary>
        /// 中心站查询遥测站事件记录
        /// </summary>
        FC_50 = 0x50,
        /// <summary>
        /// 中心站查询遥测站时钟
        /// </summary>
        FC_51 = 0x51

    }

    /// <summary>
    /// 功能码信息
    /// </summary>
    public class FunctionCodeInfo
    {
        /// <summary>
        /// 获取功能码对应名称
        /// </summary>
        /// <param name="code">功能码</param>
        /// <returns>功能码的名称</returns>
        public static string GetName(FunctionCode code) => code switch
        {
            FunctionCode.FC_2F => "链路维持报",
            FunctionCode.FC_30 => "测试报",
            FunctionCode.FC_31 => "均匀时段水文信息报",
            FunctionCode.FC_32 => "遥测站定时报",
            FunctionCode.FC_33 => "遥测站加报报",
            FunctionCode.FC_34 => "遥测站小时报",
            FunctionCode.FC_35 => "遥测站人工置数报",
            FunctionCode.FC_36 => "遥测站图片报或中心站查询遥测站图片采集信息",
            FunctionCode.FC_37 => "中心站查询遥测站实时数据",
            FunctionCode.FC_38 => "中心站查询遥测站时段数据",
            FunctionCode.FC_39 => "中心站查询遥测站人工置数",
            FunctionCode.FC_3A => "中心站查询遥测站指定要素数据",
            FunctionCode.FC_40 => "中心站修改遥测站基本配置表",
            FunctionCode.FC_41 => "中心站读取遥测站基本配置表/遥测站自报基本配置表",
            FunctionCode.FC_42 => "中心站修改遥测站运行参数配置表",
            FunctionCode.FC_43 => "中心站读取遥测站运行参数配置表/遥测站自报运行参数配置表",
            FunctionCode.FC_44 => "查询水泵电机实时工作数据",
            FunctionCode.FC_45 => "查询遥测站终端软件版本",
            FunctionCode.FC_46 => "查询遥测站状态和报警信息",
            FunctionCode.FC_47 => "初始化固态存储数据",
            FunctionCode.FC_48 => "恢复终端出厂设置",
            FunctionCode.FC_49 => "修改密码",
            FunctionCode.FC_4A => "设置遥测站时钟",
            FunctionCode.FC_4B => "设置遥测终端IC卡状态",
            FunctionCode.FC_4C => "控制水泵开关命令/水泵状态信息自报",
            FunctionCode.FC_4D => "控制阀门开关命令/阀门状态信息自报",
            FunctionCode.FC_4E => "控制闸门开关命令/闸门状态信息自报",
            FunctionCode.FC_4F => "水量定值控制命令",
            FunctionCode.FC_50 => "中心站查询遥测站事件记录",
            FunctionCode.FC_51 => "中心站查询遥测站时钟",
            _ => "",
        };
    }

}
